home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / lalr.lha / lalr / src / Gen.md < prev    next >
Text File  |  1992-08-18  |  2KB  |  85 lines

  1. (* generate the parser *)
  2.  
  3. (* $Id: Gen.md,v 1.4 1992/08/07 15:22:49 grosch rel $ *)
  4.  
  5. (* $Log: Gen.md,v $
  6.  * Revision 1.4  1992/08/07  15:22:49  grosch
  7.  * allow several scanner and parsers; extend module Errors
  8.  *
  9.  * Revision 1.3  1991/11/21  14:53:14  grosch
  10.  * new version of RCS on SPARC
  11.  *
  12.  * Revision 1.2  90/12/20  19:26:38  grosch
  13.  * removed time stamp from tables
  14.  * 
  15.  * Revision 1.1  90/06/12  16:54:08  grosch
  16.  * renamed main program to lalr, added { } for actions, layout improvements
  17.  * 
  18.  * Revision 1.0     88/10/04  14:36:15  vielsack
  19.  * Initial revision
  20.  * 
  21.  *)
  22.  
  23. DEFINITION MODULE Gen;
  24.  
  25. FROM TokenTab    IMPORT Terminal;
  26. FROM Automaton    IMPORT Infinite, tIndex, tStateIndex;
  27. FROM IO        IMPORT tFile;
  28. FROM TokenTab    IMPORT Vocabulary;
  29.  
  30. CONST NoState = 0;
  31.  
  32. TYPE 
  33.     TableElmt  = SHORTCARD;
  34.     tTableLine = ARRAY Vocabulary OF tStateIndex;
  35.  
  36. VAR
  37.     Trace : BOOLEAN;
  38.     CaseFlag : BOOLEAN;
  39.     CaseLabels : INTEGER;
  40.  
  41.     FirstSymbol,
  42.     LastSymbol,
  43.     FirstTerminal,
  44.     LastTerminal     : Vocabulary;
  45.     NonTermOffset    : CARDINAL;
  46.  
  47.     FirstState,
  48.     LastState,
  49.     FirstReadState,
  50.     LastReadState,
  51.     FirstReadTermState,
  52.     LastReadTermState,
  53.     FirstReadNonTermState,
  54.     LastReadNonTermState,
  55.     FirstReduceState,
  56.     LastReduceState,
  57.     StopState           : tStateIndex;
  58.     ReduceOffset       : tStateIndex;
  59.  
  60.     ElmtSize : TableElmt;
  61.  
  62.     Length : POINTER TO ARRAY [1..Infinite] OF TableElmt;
  63.     LengthCount : LONGINT;
  64.     LeftHandSide : POINTER TO ARRAY [1..Infinite] OF TableElmt;
  65.     LeftHandSideCount : LONGINT;
  66.     Continuation : POINTER TO ARRAY [0..Infinite] OF TableElmt;
  67.     ContinuationCount : LONGINT;
  68.     FinalToProd : POINTER TO ARRAY [0..Infinite] OF TableElmt;
  69.     FinalToProdCount : LONGINT;
  70.  
  71. PROCEDURE GenDefaultActions;
  72.  
  73.   (* Erzeugen von Standardaktionen fuer die Deklaratioen *)
  74.  
  75. PROCEDURE GenCode (Pars: tFile; Def: tFile);
  76.  
  77.   (* Erzeuge den Code
  78.      Pars  - enthaelt das Rahmenprogramm fuer den Parser *)
  79.  
  80. PROCEDURE StartState (): CARDINAL;
  81.  
  82.   (* liefert die Codierung des Startzustandes *)
  83.  
  84. END Gen.
  85.